Skip to content

Fix/speech rate pitch volume#9

Merged
willwade merged 3 commits into
mainfrom
fix/speech-rate-pitch-volume
Jun 19, 2026
Merged

Fix/speech rate pitch volume#9
willwade merged 3 commits into
mainfrom
fix/speech-rate-pitch-volume

Conversation

@willwade

Copy link
Copy Markdown
Contributor

Summary

Issue / RFC: #

Type of change

  • Bug fix
  • New feature
  • Cross-platform / parity change
  • Refactor / tooling / docs

Cross-platform impact

A core goal of Dasher v6 is feature parity across frontends. Help reviewers
see the blast radius:

  • This changes a capability that users see on other platforms.
    If checked, I have opened / updated the feature matrix
    (website/src/data/feature-status.yaml) — linked PR: #
    (or confirmed this is genuinely platform-specific-only)
  • This introduces a new UX or hardware interaction.
    If checked, an RFC (governance/rfcs) is linked: #

Definition of Done

  • CI is green (build + tests + lint + format, as applicable)
  • Tests added for new behaviour
  • Feature matrix updated if this affects a cross-platform capability
  • Docs / changelog updated if the change is user-facing
  • Commits are signed off (DCO) — git commit -s

willwade added 3 commits June 19, 2026 16:57
The DotNetTtsWrapper's SapiTtsClient ignores TtsOptions (Rate, Pitch,
Volume). Until the wrapper fix (AACTools/dotnet-tts-wrapper PR) is
published as a new NuGet version, bypass it for SAPI:

- Use System.Speech.SpeechSynthesizer directly in SpeechService
- Rate: mapped to synthesizer.Rate (-10..10)
- Volume: set directly on synthesizer (0-100)
- Pitch: via SSML <prosody pitch=...> (no native property)
- Voice enumeration via SpeechSynthesizer.GetInstalledVoices()

Note: 32-bit SAPI5 voices still invisible because the app runs 64-bit
and System.Speech is bitness-bound. Requires a 32-bit surrogate process
to resolve — tracked separately.

Signed-off-by: will wade <willwade@gmail.com>
Voices now load automatically when:
- Speech settings panel is first shown (no need to click Load Voices)
- User changes the TTS engine dropdown

Signed-off-by: will wade <willwade@gmail.com>
Fixes Rate, Pitch, and Volume for SAPI voices in the wrapper itself.
Dasher-Windows still has the direct SAPI bypass which can be removed
in a follow-up once the wrapper fix is verified.

Signed-off-by: will wade <willwade@gmail.com>
@willwade willwade merged commit 0df7eee into main Jun 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant